/*
 * Cliente.java
 *
 * Created on 5 de Outubro de 2007, 10:59
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package classes;

import bd.Database;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
import javax.swing.JOptionPane;

/**
 *
 * @author Juliano
 */
public class Cliente {
    
    private String nome;
    private String logradouro;
    private String data_cad;
    private String email;
    private String data_nascimento;
    private String rg;
    private String cpf;
    private String bairro; 
    private String estado;
    private String cidade;
    private String sexo; 
    private String cep;
    private Database bd;
    private String id;
    private ArrayList<String> telefones = new ArrayList<String>();

    /** Creates a new instance of Cliente */
    public Cliente(Database bd) {
       this.bd = bd;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getlogradouro() {
        return logradouro;
    }

    public void setlogradouro(String logradouro) {
        this.logradouro = logradouro;
    }

    public String getdata_cad() {
        return data_cad;
    }

    public void setdata_cad(String data_cad) {
        this.data_cad = data_cad;
    }

    public String getemail() {
        return email;
    }

    public void setemail(String email) {
        this.email = email;
    }

    public String getsexo() {
        return sexo;
    }

    public void setsexo(String sexo) {
        this.sexo = sexo;
    }

    public String getdata_nascimento() {
        return data_nascimento;
    }

    public void setdata_nascimento(String data_nascimento) {
        this.data_nascimento = data_nascimento;
    }

    public String getrg() {
        return rg;
    }

    public void setrg(String rg) {
        this.rg = rg;
    }

    public String getcpf() {
        return cpf;
    }

    public void setcpf(String cpf) {
        this.cpf = cpf;
    }
    
    public String getcep(){
        return cep;
    }
    
    public void setcep(String cep){
       this.cep = cep;
    }
    
    public String getbairro() {
        return bairro;
    }

    public void setbairro(String bairro) {
        this.bairro = bairro;
    }

    public String getestado() {
        return estado;
    }

    public void setestado(String estado) {
        this.estado = estado;
    }
    
    public String getcidade(){
        return cidade;
    }
    
    public void setcidade(String cidade){
        this.cidade = cidade;
    }
    
    public void setId(String id)
    {
        this.id = id;
    }
    
    public void addtelefone(String telefone)
    {
        this.telefones.add(telefone);
    }
     
    public ArrayList<String> gettelefone()
    {
        return telefones;
    }
      
    public void deltelefone(String telefone)
    {
        this.telefones.remove(telefone);
    } 
    
    public void limpatelefones()
    {
        this.telefones.clear();
    }
     
    public void obter()
    {
        String sql= "SELECT cliente.nome,cliente.bairro,cliente.cidade,cliente.estado,"
                +"cliente.cpf,cliente.rg,to_char(cliente.data_nascimento,'dd/MM/yyyy') as dataNasc," 
                +"cliente.sexo,cliente.email,to_char(cliente.data_cad,'dd/MM/yyyy')as data_cad ,"
                +"cliente.logradouro,cliente.cep FROM cliente WHERE (id_cliente = "+id+")";
        
        ResultSet rs = bd.executeQueryRs(sql);
        if(bd.Error){
               JOptionPane.showMessageDialog(null,bd.ErrorMessage);
                return;
        }
        try
        {
            rs.next();
            nome = rs.getString("nome");
            bairro = rs.getString("bairro");
            cidade = rs.getString("cidade");
            estado = rs.getString("estado");
            cpf = rs.getString("cpf");
            rg = rs.getString("rg");
            data_nascimento = rs.getString("dataNasc");
            sexo = rs.getString("sexo");
            email = rs.getString("email");
            data_cad = rs.getString("data_cad");
            logradouro = rs.getString("logradouro");  
            cep = rs.getString("cep");
        } catch (SQLException ex)
        {
            ex.printStackTrace();
        }
        
        rs = bd.executeQueryRs("SELECT * FROM telefone WHERE (id_cliente ="+id+")");
        if(bd.Error){
               JOptionPane.showMessageDialog(null,bd.ErrorMessage);
                return;
        }
        try
        {
            telefones.clear();
            while(rs.next())
            {
                telefones.add(rs.getString("numero"));
            }
            
        } catch (SQLException ex)
        {
            ex.printStackTrace();
        }        
    }
    public boolean atualizar()
    {
        Date data = new Date();
        Date datacad = new Date();
        data.parse(data_nascimento);
        datacad.parse(data_cad);
        String sql = "update cliente set nome = '"+nome+"',bairro = '"+bairro+"',cidade = '"+cidade+"',"
                +"estado = '"+estado+"',cpf = '"+cpf+"',rg = '"+rg+"',data_nascimento = '"+data+"',"
                +"sexo = '"+sexo+"',email = '"+email+"',data_cad = '"+datacad+"',cep = '"+cep+"',"
                +"logradouro = '"+logradouro+"' WHERE (id_cliente ="+id+")";
        bd.executeCommand(sql,false);
        if(bd.Error)
        {
           JOptionPane.showMessageDialog(null,bd.ErrorMessage);
            return(false);
        }
        sql ="delete FROM telefone WHERE (id_cliente = "+id+")";
        bd.executeCommand(sql,false);
        if(bd.Error)
        {
           JOptionPane.showMessageDialog(null,bd.ErrorMessage);
            return(false);
        }
        insereAtores(id);
        return(true);         
    }
    
    public boolean gravar()
    {
        Date data = new Date();
        Date datacad = new Date();
        data.parse(data_nascimento);
        datacad.parse(data_cad);
        String sql = "insert into cliente(bairro,cidade,estado,cpf,rg,data_nascimento,sexo,email,"
              +"data_cad,logradouro,nome,cep) values('"+bairro+"','"+cidade+"','"+estado+"','"+cpf+"','"
              +rg+"','"+data+"','"+sexo+"','"+email+"','"+datacad+"','"+logradouro+"','"+nome+"','"+cep+"');";
        bd.executeCommand(sql,false);
            if(bd.Error)
            {
               JOptionPane.showMessageDialog(null,bd.ErrorMessage);
                return(false);
            }
            sql="select MAX(id_cliente) as id_cliente from cliente";
            ResultSet rs = bd.executeQueryRs(sql);
            try{
               rs.next();
               id = rs.getString("id_cliente");
            }
            catch(SQLException e)
            {
                JOptionPane.showMessageDialog(null,e);
            }
            insereAtores(id);
            return(true);
     }
     
     public boolean insereAtores(String idcliente)
     {
        String sql;
        for(int i=0;i<this.telefones.size();i++){
            sql="insert into telefone(id_cliente,numero) values("+idcliente+",'"+telefones.get(i)+"');";
            bd.executeCommand(sql,false);
            if(bd.Error)
            {
                JOptionPane.showMessageDialog(null,bd.ErrorMessage);
                return(false);
            }
        } 
        return(true);
     }
     
     public boolean deleta(){
        String sql ="delete FROM cliente WHERE (id_cliente = "+id+")";
        bd.executeCommand(sql,false);
        if(bd.Error)
        {
           JOptionPane.showMessageDialog(null,bd.ErrorMessage);
            return(false);
        }
        sql ="delete FROM telefone WHERE (id_cliente = "+id+")";
        bd.executeCommand(sql,false);
        if(bd.Error)
        {
           JOptionPane.showMessageDialog(null,bd.ErrorMessage);
            return(false);
        }
        return(true); 
     }
     
     public boolean verifica(String cpf){
         String sql = "select cpf FROM cliente WHERE (cpf ='"+cpf+"')";
         int cont =0;
         bd.executeCommand(sql,false);
         if(bd.Error)
         {
             JOptionPane.showMessageDialog(null,bd.ErrorMessage);
         }
         ResultSet rs = bd.executeQueryRs(sql);
         try{
             while(rs.next()){
                cont++;
             } 
         }
         catch(SQLException e)
         {
            JOptionPane.showMessageDialog(null,e);
         }
         if(cont != 0)
             return true;
         else
             return false;
     }
}
